package com.example.culturemanage

import androidx.lifecycle.MutableLiveData
import com.example.culturemanage.entity.AddCultureitem
import com.example.culturemanage.entity.CultureListData

import com.example.culturemanage.entity.DetailCultureData
import com.example.culturemanage.entity.EditCultureitem
import com.example.culturemanage.entity.SearchEntityEntity

import com.example.lib_base.mvvm.BaseViewModel
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject

@HiltViewModel
class CultureManageViewModel @Inject constructor(private val repo: CultureManageRepo):BaseViewModel () {

    /**
 * 获取文化活动列表数据，并通过 [CultureListSuccess] LiveData 通知观察者结果。
 *
 * 该方法调用 [repo.apiService.getCultureList] 接口获取数据，并将结果通过
 * [CultureListSuccess.postValue] 发送。用于在 UI 层展示文化活动列表。
 */
val CultureListSuccess = MutableLiveData<MutableList<CultureListData>>()
fun CultureList() {
    httpRequest({ repo.apiService.getCultureList() }, { CultureListSuccess.postValue(it) })
}

/**
 * 获取文化活动详情数据，并通过 [CulturedetailSuccess] LiveData 通知观察者结果。
 *
 * 该方法根据给定的活动 ID 调用 [repo.apiService.getCulturedetail] 接口获取详情数据，
 * 并将结果通过 [CulturedetailSuccess.postValue] 发送。用于在 UI 层展示文化活动详细信息。
 *
 * @param id 文化活动的唯一标识符
 */
val CulturedetailSuccess = MutableLiveData<DetailCultureData>()
fun Culturedetail(id: Int) {
    httpRequest({ repo.apiService.getCulturedetail(id) }, { CulturedetailSuccess.postValue(it) })
}

/**
 * 删除指定的文化活动，并通过 [delCultureSuccess] LiveData 通知删除操作结果。
 *
 * 该方法根据给定的活动 ID 调用 [repo.apiService.deleteCulture] 接口执行删除操作，
 * 并将删除结果通过 [delCultureSuccess.postValue] 发送。用于在 UI 层反馈删除操作是否成功。
 *
 * @param id 要删除的文化活动的唯一标识符
 */
val delCultureSuccess = MutableLiveData<Boolean>()
fun delCulture(id: Int) {
    httpRequest({ repo.apiService.deleteCulture(id) }, { delCultureSuccess.postValue(it) })
}

/**
 * 根据关键词搜索文化活动，并通过 [searchCultureSuccess] LiveData 通知搜索结果。
 *
 * 该方法调用 [repo.apiService.searchCulture] 接口，传入指定关键词进行搜索，
 * 并将匹配的结果通过 [searchCultureSuccess.postValue] 发送。用于在 UI 层展示搜索结果。
 *
 * @param keyword 用于搜索文化活动的关键词
 */
val searchCultureSuccess = MutableLiveData<SearchEntityEntity>()
fun searchCulture(keyword: String) {
    httpRequest({ repo.apiService.searchCulture(keyword) }, { searchCultureSuccess.postValue(it) })
}

    //添加文化活动
    val addCultureSuccess = MutableLiveData<AddCultureitem>()
    fun addCulture(map: Map<String,Any>) {
        httpRequest({ repo.apiService.addculture(repo.mapTopBody(map)) }, { addCultureSuccess.postValue(it) })
    }
    //修改文化活动
    val editCultureSuccess = MutableLiveData<EditCultureitem>()
    fun editCulture(id: Int, map: DetailCultureData) {
        httpRequest({ repo.apiService.editCulture(id,repo.mapTopBody(map)) }, { editCultureSuccess.postValue(it) })
    }


}